package com.sanyou.service;

import com.sanyou.pojo.Equipment;
import com.sanyou.pojo.Factory;
import com.sanyou.pojo.vo.EquipmentVo;
import com.sanyou.utils.PagedResult;

import java.util.List;

/**
 * User: asus
 * Date: 2021/6/5
 * Time: 21:34
 * Version:V1.0
 */
public interface EquipmentService {

    /**
     * 新增设备
     * @param equipment
     */
    void addEquipment(Equipment equipment);

    /**
     * 分页查询设备
     * @param equipmentVo
     * @param page
     * @param pageSize
     * @return
     */
    PagedResult query(EquipmentVo equipmentVo, Integer page, Integer pageSize);
  /*  PagedResult querySearch(EquipmentVo equipmentVo, Integer page, Integer pageSize);*/

    /**
     * 启用/禁用设备
     * @param id
     * @param mark
     */
    void enableOrUnEnableEquip(String id, int mark);

    /**
     * 设备信息记录表equipment_records更新
     * @param equipment
     * @param userId
     */
    void updateEquipInfo(Equipment equipment,String userId);

    /**
     * 查询所有设备,生成树结构返回
     * @return
     */
    List<EquipmentVo> getEquipmentTree();

    /**
     * 查询用户拥有的设备权限
     * @param userId 用户id
     * @return
     */
    List<Equipment> getUserEquip(String userId,Byte equipType);

    /**
     * 获取用户拥有数据访问权限的所有设备
     * @param userId
     * @return
     */
    List<Equipment> listEquipmentByUserId(String userId);

    /**
     * 删除设备
     * @param equipment
     */
    void deleteEquip(Equipment equipment);

    /**
     * 更新设备地址
     * @param equipment
     */
    void updateAddress(Equipment equipment);

    /**
     * 同步更新车间下属的设备的健康及亚健康阈值和周期
     */
    void updateEquipmentBySubFactory(Factory subFactory);

    /**
     * 查询厂家拥有的设备
     * @param factoryId
     * @return
     */
    List<Equipment> getEquip(String factoryId);

    /**
     * 查询车间拥有的设备
     * @param subFactoryId
     * @return
     */
    List<Equipment> getEquipBySubFactoryId(String subFactoryId);

    /**
     * getEquipById
     * @param id
     * @return
     */
    Equipment getEquipById(String id);

    /**
     * 根据设备编号查询对应的阴极板
     * 编码理论上是唯一的，但数据库并未做唯一约束
     * @param equipNo
     * @return
     */
    Equipment getEquipmentByCode(String equipNo);

    /**
     * 获取所有的设备和工厂信息列表
     * @return
     */
    List<EquipmentVo> getEquipmentFactoryList();



    /**
     * 通过sub_factoryid设备和工厂信息列表
     * @return
     */

    List<Equipment> getEquipmentFactoryListbySubFac(String subFacId);
}
